package dao;

import utils.DataBaseUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class BaseDao {

    protected Connection conn = null;

    public BaseDao(Connection conn) {
        this.conn = conn;
    }

    /**
     * 数据库 增 删 改 操作方法
     *
     * @param sql    sql语句
     * @param params 可选参数数组
     * @return 受影响的行数 int,如果执行错误则返回 -1,失败则返回 0;
     */
    public int update(String sql, Object... params) {
        int row = 0;//默认受影响行数值为0
        PreparedStatement stmt = null;//执行对象
        try {
            //实例化执行对象
            stmt = this.conn.prepareStatement(sql);
            //设置参数
            if (params != null && params.length > 0) {
                for (int i = 0; i < params.length; i++) {
                    stmt.setObject(i + 1, params[i]);
                }
            }
            //开始执行并接收执行结果
            row = stmt.executeUpdate();//增 删 改
        } catch (Exception e) {
            row = -1;
        } finally {
            //关闭资源,连接对象暂不关闭
            DataBaseUtil.closeAll(null, stmt, null);
        }
        return row;
    }


    /**
     * 数据库 查询 操作方法
     *
     * @param sql    sql语句
     * @param params 可选参数数组
     * @return 返回ResultSet结果集
     */
    public ResultSet query(PreparedStatement stmt, Object... params) {
        ResultSet rs = null;
        try {
            //设置参数
            if (params != null && params.length > 0) {
                for (int i = 0; i < params.length; i++) {
                    stmt.setObject(i + 1, params[i]);
                }
            }
            //开始执行并接收执行结果
            rs = stmt.executeQuery();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }

}
